技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
0
作業系統L6-同步
作業系統
蔡基
2022-01-06 00:21:01
‧
3187 瀏覽
分享至
作業系統L6-同步
臨界區間(critical section)
每一行程中的部分程式碼,可以共同改變變數,更新表格,寫入檔案
區間結構
入口區段(entry section):臨界區間入口
出口區段(exit section):臨界區間出口
剩餘區段(remainder section)
臨界區間問題
條件
互斥(Mutual Exclusion)
:若有行程已在
臨界區間
執行,其他行程不能再同區間執行
進行(Progress)
:被選擇的行程不得被無限延遲下去
限制性等待(Bounded Waiting)
:一個行程被要求進入
臨界區間
答應前,允許其他一個行程進入
問題解答
可搶先核心(preemptive kernels)
:
核心模式
執行時可搶先
不可搶先核心(nonpreemptive kernels)
:離開
核心模式
或自動交出CPU時才可搶先
同步硬體
鎖(locking)
用於保護
臨界區間
單一處理器可停止中斷,多處理器較沒效率
同步軟體
互斥鎖(Mutex Lock)
acquire():取得鎖
release():釋放鎖
忙碌等待(busy waiting)
自旋鎖(spinlock)
號誌(Semaphore)
不需要忙碌等待的同步工具
計數號誌(Counting semaphore)
:不受限制的整數值
二元號誌(Binary semaphore)
:數值可以是0,1,可用來取代
互斥鎖
無忙碌等待的號誌
每個號誌都有一個相關聯的
等待佇列
數值(整數型態)
指向串列的下一筆紀錄
操作
block:把呼叫操作的行程放到適當的等候佇列
wakeup:移除等候佇列的一個行程,放到就緒佇列
死結和飢餓
死結(Dead Lock)
:兩個以上的行程等待一個只能被等待的行程
飢餓(Starvation)
:無限期阻隔
優先權倒置(Priority Inversion)
:高優先權行程被低優先權行程鎖把持造成排班問題,需用**優先權繼承協定(priority-inheritance protocol)**解決
典型的同步問題
有限緩衝區問題
n個緩衝區,每一個緩衝區保存一項資料
讀取者-寫入者問題
讀取者
:只能讀取資料集;它們不能執行資料集
寫入者
:可以讀和寫資料集
允許許多
讀取者
同時去讀取共用資料
同一時間只有一個
寫入者
可以存取資料
讀取者-寫入者問題的變形
除非有寫入者已獲得允許去使用共用資料,否則讀取者不需保持等候狀態
只要寫入者準備好之後,需要盡快的撰寫共用資料
哲學家進餐的問題(Dining-philosophers Problem)
需兩枝筷子才能吃,吃完同時放下兩枝筷子
監督程式
一種對於行程同步提供方便和有效機制的高階使用一組操作資料的函數來封裝資料
抽象資料型態(abstract data type,ADT):只能由程序內執行碼存取的內部變數
條件變數
condition x, y;
x.wait () :使用後的行程會被暫停,直到x.signal ()發生
x.signal ():恢復因為x.wait ()而被暫停的行程
留言
追蹤
檢舉
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22201
篇
完賽人數
600
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
teams 未完整轉移 skype 聯絡人
雲端 ERP 評估
信箱重覆寄信
請問有推薦初學者使用的 GUI 應用程式開發工具嗎?
遠端連線終端機
【Python】
TEAMS授權帳號問題和連線方式
請問有比樂詞網更好的網絡術語詞典嗎?
Line官方帳號『免費通話』圖文功能連結問題
Wifi cert 証書認証問題
熱門回答
請問有推薦初學者使用的 GUI 應用程式開發工具嗎?
詭異的M2SSD問題安裝當系統碟都會死亡
雲端 ERP 評估
office不明原因消失
信箱重覆寄信
熱門文章
Visual Studio Community 2022 建立用 C++ 呼叫 EXE 的安裝檔 && Pyinstaller 打包外部文件 (INI)
基於WebGL和Three.js構建高性能虛擬試穿系統:技術實現與挑戰
Python 入門筆記 - 6 - 註解、變數
Vscode入門筆記 - 1 - Vscode介紹
重新學JAVA-02-2-資料結構part 2
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}